<?php
/*
This file contains the functions
that performs the DB operation. The 
Database properties are taken from the
session.
*/

$databaseURL;
$databaseUName;
$databasePWord;
$databaseName; 

/*
Metodo de inicializacion de la BD
Devuelve la variable de la conexión.
*/
function iniciarBD(){
	
    if(! isset($_SESSION['databaseURL'])){
            include($_SERVER['DOCUMENT_ROOT']."/conf/conf.php");
            $dbConf = new OfertoYaConf();
            $databaseURL = $dbConf->darURLBD();
            $databaseUName = $dbConf->darUsuarioBD();
            $databasePWord = $dbConf->darPWordBD();
            $databaseName = $dbConf->darNombreBD();
                
                //Set DB Info. in-session
            $_SESSION['databaseURL']=$databaseURL; 
            $_SESSION['databaseUName']=$databaseUName; 
            $_SESSION['databasePWord']=$databasePWord; 
            $_SESSION['databaseName']=$databaseName;
        
        
        
            $connection = mysql_connect($databaseURL,$databaseUName,$databasePWord);
                // or die ("Error while connecting to localhost");
            $db = mysql_select_db($databaseName,$connection);
                //or die ("Error while connecting to database");
            mysql_close($connection);
        }
    $databaseURL = $_SESSION['databaseURL'];
    $databaseUName = $_SESSION['databaseUName'];
    $databasePWord = $_SESSION['databasePWord'];
    $databaseName = $_SESSION['databaseName']; 

    $connection = mysql_connect($databaseURL,$databaseUName,$databasePWord);
        //or die ("Error while connecting to host");
    $db = mysql_select_db($databaseName,$connection);
        //or die ("Error while connecting to database");
    return $connection;
}

/*
Metodo para cerrar la conexión con la Base de Datos.
Recibe la variable de la conexión obtenida en iniciarBD().
*/
function cerrarDB($conexion){
    mysql_close($conexion);
}

/*
 * Metodo para agregar un correo en la tabla de correos de prelanzamiento
 */
function agregarNuevoCorreoPrelanzamiento($ingresoCorreo) {
	$conexion = iniciarBD();
	$ingresoCorreoSafe = mysql_real_escape_string($ingresoCorreo);
	$query0 = "SELECT * FROM correos_prelanzamiento WHERE correo = '" . $ingresoCorreoSafe . "'";
	$resultado0 = mysql_query($query0);
	if(mysql_num_rows($resultado0) == 0) {
		$query1 = "INSERT INTO correos_prelanzamiento (correo) VALUES ('" . $ingresoCorreoSafe . "')";
		$resultado = mysql_query($query1);	
	}
	cerrarDB($conexion);
}

/*
Metodo que agrega un nuevo usuario a la base de datos desde inscripcion.php
-nombres, apellidos, email, seudonimo, password son VARCHAR simples
-fecha_nacimiento es un DATE con formato YYYY-MM-DD
-genero es un CHAR que puede tomar valor 'm' o 'f'
-esta_bloqueada y esta_conectado son BOOLEAN que por default comienzan en true
*/
function agregarNuevoUsuario($nombres, $apellidos, $fecha_nacimiento, $genero, $email, $seudonimo, $password ){
	$conexion = iniciarBD();
	$query1;
	$query2;
	$query3;
	
	$NombresSafe = mysql_real_escape_string($nombres);
	$ApellidosSafe = mysql_real_escape_string($apellidos);
	$FechaSafe = mysql_real_escape_string($fecha_nacimiento);
	$GeneroSafe = mysql_real_escape_string($genero);
	$EmailSafe = mysql_real_escape_string($email);
	$SeudonimoSafe = mysql_real_escape_string($seudonimo);
	$PasswordSafe = mysql_real_escape_string($password);
	
    //Verifica que el usuario que se esta intentando crear no exista 
	$query1 = "SELECT id_usuario FROM usuario WHERE email ='".$EmailSafe."'";	
	$resultados = mysql_query($query1);
	if(mysql_num_rows($resultados)==0){
		//Crea un nuevo registro para un usuario
		$query2 = "INSERT INTO usuario (nombres, apellidos, fecha_nacimiento, genero, email, seudonimo, password, esta_bloqueada, esta_conectado) VALUES('".$NombresSafe."', '".$ApellidosSafe."', '".$FechaSafe."', '".$GeneroSafe."', '".$EmailSafe."', '".$SeudonimoSafe."', '".$PasswordSafe."', 'true', 'false')"; 
		mysql_query($query2);
		
		 $resultados2 = mysql_query($query1);    
		//Crea un registro nuevo de historial para el usuario 
		while($row = mysql_fetch_array($resultados2)){
			$id_usuario = $row['id_usuario'];
			$query2 = "INSERT INTO historial_usuario (id_historial_usuario, ultima_fecha_ingreso, fecha_inscripcion) VALUES (".$id_usuario.", NOW(), CURDATE())";
			$query4 = "INSERT INTO ubicacion_usuario (id_ubicacion_usuario, pais, departamento, ciudad, barrio, direccion, telefono_fijo, telefono_celular) VALUES (".$id_usuario.", '-', '-', '-', '-', '-', 0, 0 )";
			mysql_query($query2);
			mysql_query($query4);
			$query3 = "UPDATE usuario SET id_historial_usuario=".$id_usuario." WHERE email='".$EmailSafe."'";
			$query5 = "UPDATE usuario SET id_ubicacion_usuario=".$id_usuario." WHERE email='".$EmailSafe."'";
			mysql_query($query3);
			mysql_query($query5);
		}
		cerrarDB($conexion);
		return 1;
	}
	else{
		cerrarDB($conexion);
		return 0;
	}
	
}

/**
*	Metodo usado para verificar si un seudonimo se encuentra disponible
*/
function verificarSeudonimoDisponible($Seudonimo){
	$conexion = iniciarBD();
	$query1;
	$SeudonimoSafe = mysql_real_escape_string($Seudonimo);

	$query1 = mysql_query("SELECT * FROM usuario WHERE seudonimo ='".$SeudonimoSafe."'");
	
	if(mysql_num_rows($query1)>0)
	{
		echo 'El seud&oacute;nimo <STRONG>'.$Seudonimo.'</STRONG> ya ha sido tomado.';
	}
	else
	{
		echo 'OK';
	}
	cerrarDB($conexion);
}

/**
*	Metodo usado para obtener la información sobre el usuario para el menú izquierdo.
*/
function infoCuenta($Seudonimo){
	$conexion = iniciarBD();
	$query1;
	$query2;
	$SeudonimoSafe = mysql_real_escape_string($Seudonimo);
	$id;

	$query1 = mysql_query("SELECT id_usuario FROM usuario WHERE seudonimo ='".$SeudonimoSafe."'");
	
	if($row = mysql_fetch_array($query1)){
		$id = $row['id_usuario'];
	}
	
	$query2 = mysql_query("SELECT * FROM historial_usuario WHERE id_historial_usuario ='".$id."'");
	
	if($row = mysql_fetch_array($query2)){
		$creditosCompradosHistoricos = $row['ofertas_compradas_historicas'];
		$creditosUsadosHistoricos = $row['ofertas_usadas_historicas'];
		$creditosDisponibles = $row['ofertas_disponibles'];
		$ultimaFechaCompraCreditos = $row['ultima_fecha_compra_ofertas'];
		$ultimaFechaIngreso = $row['ultima_fecha_ingreso'];
		$ultimaFechaOferta = $row['ultima_fecha_oferta'];
		$numeroSubastasGanadas = $row['numero_subastas_ganadas'];
	}
	cerrarDB($conexion);
	return $creditosCompradosHistoricos.".".$creditosUsadosHistoricos.".".$creditosDisponibles.".".$ultimaFechaCompraCreditos.".".$ultimaFechaIngreso.".".$ultimaFechaOferta.".".$numeroSubastasGanadas;
}

/**
*	Metodo usado para obtener la información sobre el usuario para la página de Mi Perfil.
*/
function infoMiPerfil($Seudonimo){
	$conexion = iniciarBD();
	$query1;
	$query2;
	$query3;
	$SeudonimoSafe = mysql_real_escape_string($Seudonimo);
	$id;

	$query1 = mysql_query("SELECT * FROM usuario WHERE seudonimo ='".$SeudonimoSafe."'");
	
	if($row = mysql_fetch_array($query1)){
		$id = $row['id_usuario'];
		$idubicacion= $row['id_ubicacion_usuario'];
		$idhistorial= $row['id_historial_usuario'];
		$nombres = $row['nombres'];
		$apellidos = $row['apellidos'];
		$nacimiento = $row['fecha_nacimiento'];
		$genero = $row['genero'];
		$email = $row['email'];
		$seudonimo = $row['seudonimo'];
	}
	
	$query2 = mysql_query("SELECT * FROM historial_usuario WHERE id_historial_usuario ='".$idhistorial."'");
	
	if($row = mysql_fetch_array($query2)){
		$creditosCompradosHistoricos = $row['ofertas_compradas_historicas'];
		$creditosUsadosHistoricos = $row['ofertas_usadas_historicas'];
		$creditosDisponibles = $row['ofertas_disponibles'];
		$ultimaFechaCompraCreditos = $row['ultima_fecha_compra_ofertas'];
		$ultimaFechaIngreso = $row['ultima_fecha_ingreso'];
		$ultimaFechaOferta = $row['ultima_fecha_oferta'];
		$numeroSubastasGanadas = $row['numero_subastas_ganadas'];
		$fechaIncripcion = $row['fecha_inscripcion'];
	}
	
	$query3 = mysql_query("SELECT * FROM ubicacion_usuario WHERE id_ubicacion_usuario ='".$idubicacion."'");
	
	if($row = mysql_fetch_array($query3)){
		$pais = $row['pais'];
		$departamento = $row['departamento'];
		$ciudad = $row['ciudad'];
		$barrio = $row['barrio'];
		$direccion = $row['direccion'];
		$fijo = $row['telefono_fijo'];
		$celular = $row['telefono_celular'];
	}
	
	cerrarDB($conexion);
	return $nombres."%$".$apellidos."%$".$nacimiento."%$".$genero."%$".$email."%$".$seudonimo."%$".$creditosCompradosHistoricos."%$".$creditosUsadosHistoricos."%$".$creditosDisponibles."%$".$ultimaFechaCompraCreditos."%$".$ultimaFechaIngreso."%$".$ultimaFechaOferta."%$".$numeroSubastasGanadas."%$".$fechaIncripcion."%$".$pais."%$".$departamento."%$".$ciudad."%$".$barrio."%$".$direccion."%$".$fijo."%$".$celular ;
}

/**
*	Metodo usado para autenticar un usario contra la base de datos
*/
function autenticarUsuario($Email, $PWord, $cookie){
	$conexion = iniciarBD();
	$query1;
	$query2;
	$query3;
	$EmailSafe = mysql_real_escape_string($Email);
	$PWordSafe = mysql_real_escape_string($PWord);
	$query1 = "SELECT seudonimo, id_usuario FROM usuario WHERE email ='".$EmailSafe."' AND password='".$PWordSafe."'";
	$resultados1 = mysql_query($query1);
	$seudonimo;
	if($row = mysql_fetch_array($resultados1)){
		$seudonimo = $row['seudonimo'];
		$idUsuario = $row['id_usuario'];
		ponerCookie($seudonimo, $PWordSafe, $cookie);
		$query2 = "UPDATE usuario SET esta_conectado ='true' WHERE email  ='".$EmailSafe."'";
		mysql_query($query2);
		$query3 = "UPDATE historial_usuario SET ultima_fecha_ingreso = NOW() WHERE id_historial_usuario ='".$idUsuario."'";
		mysql_query($query3);
		cerrarDB($conexion);
		return 1;
	}
	cerrarDB($conexion);
	return 0;
}

function desautenticarUsuario($seudonimo){
	$conexion = iniciarBD();
	$SeudonimoSafe = mysql_real_escape_string($seudonimo);
	$query1 = "UPDATE usuario SET esta_conectado ='false' WHERE seudonimo  ='".$SeudonimoSafe."'";
	mysql_query($query1);
	cerrarDB($conexion);
	borrarCookie();
}

function cambiarContrasena($pswdAntiguo, $pswdNuevo){
	$conexion = iniciarBD();
	$antiguoSafe = mysql_real_escape_string($pswdAntiguo);
	$nuevoSafe = mysql_real_escape_string($pswdNuevo);
	$query1 = "SELECT id_usuario FROM usuario WHERE password = '".$antiguoSafe."'";
	$resultados1 = mysql_query($query1);
	if($row = mysql_fetch_array($resultados1)){
		$id = $row['id_usuario'];
		$query2 = "UPDATE usuario SET password ='".$nuevoSafe."' WHERE id_usuario='".$id."'";
		mysql_query($query2);
		cerrarDB($conexion);
		return 1;
	}
	cerrarDB($conexion);
	return 0;
}

function actualizarUbicacion($seudonimo, $pais, $departamento, $ciudad, $barrio, $direccion, $fijo, $celular){
	$conexion = iniciarBD();
	$seudonimoSafe = mysql_real_escape_string($seudonimo);
	$paisSafe = mysql_real_escape_string($pais);
	$departamentoSafe = mysql_real_escape_string($departamento);
	$ciudadSafe = mysql_real_escape_string($ciudad);
	$barrioSafe = mysql_real_escape_string($barrio);
	$direccionSafe = mysql_real_escape_string($direccion);
	$fijoSafe = mysql_real_escape_string($fijo);
	$celularSafe = mysql_real_escape_string($celular);
	$query1 = "SELECT id_usuario FROM usuario WHERE seudonimo = '".$seudonimoSafe."'";
	$resultados1 = mysql_query($query1);
	if($row = mysql_fetch_array($resultados1)){
		$id = $row['id_usuario'];
		$query2 = "UPDATE ubicacion_usuario SET pais ='".$paisSafe."', departamento ='".$departamentoSafe."', ciudad ='".$ciudadSafe."', barrio ='".$barrioSafe."', direccion ='".$direccionSafe."', telefono_fijo =".$fijoSafe.", telefono_celular =".$celularSafe." WHERE id_usuario='".$id."'";
		mysql_query($query2);
		cerrarDB($conexion);
		return 1;
	}
	cerrarDB($conexion);
	return 0;
}

/**
*	Metodo que sirve para poner una cookie y guardar la sesion
*	Guarda la cookie con los tres parametros separados por ---
*   El id se utiliza para cuando se vaya a cerrar sesión.
*/
function ponerCookie($seudonimo, $PWordSafe, $cookie){
	if($cookie == 1){	
		//SECURE debe cambiarse a TRUE para que la cookie solo sea enviada por HTTPS
		
		setcookie("OfertoYa", traducir($seudonimo)."---".traducir($PWordSafe), time()+604800, '/');
	}
	else{
		setcookie("OfertoYa", traducir($seudonimo)."---".traducir($PWordSafe), 0, '/');
	}
}

/**
* 	Metodo para borrar la cookie existente mediante un tiempo de expiracion en el pasado
*/
function borrarCookie(){
	setCookie("OfertoYa", "" , 1, '/');
}


/**
*	Metodo de traduccion 
*/
function traducir($texto) { 

    $Len_Texto=strlen($texto); 
    $Str_Encrypted_Message=""; 
    for ($Position = 0;$Position<$Len_Texto;$Position++){ 
        // long code of the function to explain the algoritm 
        //this function can be tailored by the programmer modifyng the formula 
        //to calculate the key to use for every character in the string. 
        $Key_To_Use = (($Len_Texto+$Position)+1); // (+5 or *3 or ^2) 
        //after that we need a module division because can´t be greater than 255 
        $Key_To_Use = (255+$Key_To_Use) % 255; 
        $Byte_To_Be_Encrypted = substr($texto, $Position, 1); 
        $Ascii_Num_Byte_To_Encrypt = ord($Byte_To_Be_Encrypted); 
        $Xored_Byte = $Ascii_Num_Byte_To_Encrypt ^ $Key_To_Use;  //xor operation 
        $Encrypted_Byte = chr($Xored_Byte); 
        $Str_Encrypted_Message .= $Encrypted_Byte; 
        
        //short code of  the function once explained 
        //$str_encrypted_message .= chr((ord(substr($str_message, $position, 1))) ^ ((255+(($len_str_message+$position)+1)) % 255)); 
    } 
    return $Str_Encrypted_Message; 
} 

/**
 * Metodo para obtener la información básica de una subasta (nombre)
 */
function infoSubastaBasica($idSubasta) {
	$conexion = iniciarBD();
	$query1;
	$idSubastaSafe = mysql_real_escape_string($idSubasta);
	$idProducto;
	$query1 = mysql_query("SELECT marca, modelo, descripcion, precio_comercial FROM subasta INNER JOIN producto ON subasta.id_producto = producto.id_producto WHERE subasta.id_producto =".$idSubastaSafe);
	$resultado = "";
	if (mysql_num_rows($query1) != 0) {
	  $row = mysql_fetch_array($query1);
	  $marca = $row['marca'];
	  $modelo = $row['modelo'];
	  $descripcion = $row['descripcion'];
	  $precio_comercial = $row['precio_comercial'];
	  $resultado = $marca . "---" . $modelo . "---" . $descripcion . "---" . $precio_comercial;
	}
	cerrarDB($conexion);
	return $resultado;
}
/**
 * Metodo para obtener las especificaciones de un producto dada la subasta
 */
function infoSubastaEspecificaciones($idSubasta) {
	$conexion = iniciarBD();
	$query1;
	$idSubastaSafe = mysql_real_escape_string($idSubasta);
	$idProducto;
	$query1 = mysql_query("SELECT especificaciones FROM subasta INNER JOIN producto ON subasta.id_producto = producto.id_producto WHERE subasta.id_producto =".$idSubastaSafe);
	$row = mysql_fetch_array($query1);
	$especificaciones = $row['especificaciones'];
	cerrarDB($conexion);
	return $especificaciones;
}

/**
 * Metodo para actualizar el estado de una subasta aumentando su bid actual en uno y sumando 50 al precio actual.
 */
function actualizarEstadoSubasta($idSubasta) {
	$conexion = iniciarBD();
	$query1;
	$idSubastaSafe = mysql_real_escape_string($idSubasta);
	$query1 = mysql_query("SELECT  `precio_actual` ,  `numero_ofertas` FROM  `subasta` WHERE  `id_subasta` = ".$idSubastaSafe);
	$row = mysql_fetch_array($query1);
	$nuevoPrecio = $row['precio_actual'] + 50;
	$nuevoBid = $row['numero_ofertas'] + 1;	
	$query2 = mysql_query("UPDATE  `oferto_ya`.`subasta` SET  `precio_actual` =  ".$nuevoPrecio.", `numero_ofertas` =  ".$nuevoBid." WHERE  `subasta`.`id_subasta` = ".$idSubastaSafe);
	cerrarDB($conexion);
	return $idSubasta."-".$nuevoBid;
}
?>
